// see https://rsuitejs.com/design/dark
& {
  // Gray levels
  --rs-gray-0: @B000-high-contrast;
  --rs-gray-50: @B050-high-contrast;
  --rs-gray-100: @B100-high-contrast;
  --rs-gray-200: @B200-high-contrast;
  --rs-gray-300: @B300-high-contrast;
  --rs-gray-400: @B400-high-contrast;
  --rs-gray-500: @B500-high-contrast;
  --rs-gray-600: @B600-high-contrast;
  --rs-gray-700: @B700-high-contrast;
  --rs-gray-800: @B800-high-contrast;
  --rs-gray-900: @B900-high-contrast;

  // Highlight levels
  --rs-primary-50: @H050-high-contrast;
  --rs-primary-100: @H100-high-contrast;
  --rs-primary-200: @H200-high-contrast;
  --rs-primary-300: @H300-high-contrast;
  --rs-primary-400: @H400-high-contrast;
  --rs-primary-500: @H500-high-contrast;
  --rs-primary-600: @H600-high-contrast;
  --rs-primary-700: @H700-high-contrast;
  --rs-primary-800: @H800-high-contrast;
  --rs-primary-900: @H900-high-contrast;

  // Spectrum
  --rs-color-red: @red-high-contrast;
  --rs-color-orange: @orange-high-contrast;
  --rs-color-yellow: @yellow-high-contrast;
  --rs-color-green: @green-high-contrast;
  --rs-color-cyan: @cyan-high-contrast;
  --rs-color-blue: @blue-high-contrast;
  --rs-color-violet: @violet-high-contrast;

  // Spectrum levels
  each(@spectrum, .(@color-name) {
      @color: @@color-name;
      @color-name-50: ~'@{color-name}-50-high-contrast';
      --rs-@{color-name}-50: @@color-name-50;

      each(range(9), {
        @level: @{index}00;
        @color-name-level: ~'@{color-name}-@{level}-high-contrast';
        --rs-@{color-name}-@{level}: @@color-name-level;
      });
    });

  // Stateful colors
  --rs-state-success: var(--rs-color-green);
  --rs-state-info: var(--rs-color-blue);
  --rs-state-warning: var(--rs-color-yellow);
  --rs-state-error: var(--rs-color-red);

  // Reset
  --rs-body: var(--rs-gray-900);

  // Misc
  --rs-text-link: var(--rs-primary-500);
  --rs-text-link-hover: var(--rs-primary-400);
  --rs-text-link-active: var(--rs-primary-300);
  --rs-text-primary: var(--rs-gray-50);
  --rs-text-secondary: var(--rs-gray-200);
  --rs-text-tertiary: var(--rs-gray-300);
  --rs-text-heading: var(--rs-gray-0);
  --rs-text-inverse: var(--rs-gray-800);
  --rs-text-heading-inverse: var(--rs-gray-900);
  --rs-text-active: var(--rs-primary-500);
  --rs-text-disabled: var(--rs-gray-400);
  --rs-text-highlight-bg: var(--rs-primary-500);
  --rs-border-primary: var(--rs-gray-100);
  --rs-border-secondary: var(--rs-gray-700);
  --rs-bg-card: var(--rs-gray-800);
  --rs-bg-overlay: var(--rs-gray-800);
  --rs-bg-well: var(--rs-gray-900);
  --rs-bg-active: var(--rs-primary-500);
  --rs-bg-backdrop: rgb(from var(--rs-gray-900) r g b / 80%);
  --rs-state-hover-bg: var(--rs-gray-600);
  --rs-color-focus-ring: var(--rs-gray-0);
  --rs-state-focus-shadow: 0 0 0 3px var(--rs-gray-900), 0 0 0 5px var(--rs-gray-0);
  --rs-state-focus-shadow-slim: 0 0 0 2px var(--rs-gray-0);
  --rs-state-focus-outline: 3px solid rgb(from var(--rs-primary-500) r g b / 25%);
  --rs-state-error-outline: 3px solid rgb(from var(--rs-color-red) r g b / 25%);
  --rs-shadow-overlay: 0 4px 4px rgba(0, 0, 0, 0.12), 0 0 10px rgba(0, 0, 0, 0.06);

  // Scrollbar
  --rs-scrollbar-bg: transparent;
  --rs-scrollbar-thumb-bg: var(--rs-gray-300);
  --rs-scrollbar-thumb-hover-bg: var(--rs-gray-400);

  // Button
  --rs-btn-default-bg: transparent;
  --rs-btn-default-text: var(--rs-primary-500);
  --rs-btn-default-border: 1px solid var(--rs-primary-500);
  --rs-btn-default-hover-bg: transparent;
  --rs-btn-default-hover-text: var(--rs-primary-400);
  --rs-btn-default-active-bg: transparent;
  --rs-btn-default-active-text: var(--rs-primary-200);
  --rs-btn-default-disabled-bg: transparent;
  --rs-btn-default-disabled-text: var(--rs-primary-900);
  --rs-btn-default-disabled-boreder-color: var(--rs-gray-100);
  --rs-btn-primary-bg: var(--rs-primary-500);
  --rs-btn-primary-text: var(--rs-gray-900);
  --rs-btn-primary-hover-bg: var(--rs-primary-400);
  --rs-btn-primary-active-bg: var(--rs-primary-200);
  --rs-btn-subtle-text: var(--rs-primary-500);
  --rs-btn-subtle-hover-bg: transparent;
  --rs-btn-subtle-hover-text: var(--rs-primary-400);
  --rs-btn-subtle-active-bg: transparent;
  --rs-btn-subtle-active-text: var(--rs-primary-200);
  --rs-btn-subtle-disabled-text: var(--rs-gray-500);
  --rs-btn-ghost-border: var(--rs-primary-500);
  --rs-btn-ghost-text: var(--rs-primary-500);
  --rs-btn-ghost-hover-border: var(--rs-primary-400);
  --rs-btn-ghost-hover-text: var(--rs-primary-400);
  --rs-btn-ghost-active-border: var(--rs-primary-200);
  --rs-btn-ghost-active-text: var(--rs-primary-200);
  --rs-btn-link-text: var(--rs-primary-500);
  --rs-btn-link-hover-text: var(--rs-primary-400);
  --rs-btn-link-active-text: var(--rs-primary-200);

  // Icon Button
  --rs-iconbtn-addon: transparent;
  --rs-iconbtn-activated-addon: transparent;
  --rs-iconbtn-pressed-addon: transparent;
  --rs-iconbtn-primary-addon: var(--rs-primary-400);
  --rs-iconbtn-primary-activated-addon: var(--rs-primary-300);
  --rs-iconbtn-primary-pressed-addon: var(--rs-primary-100);

  // Divider
  --rs-divider-border: var(--rs-gray-600);

  // Loader
  --rs-loader-ring: rgb(from var(--rs-gray-50) r g b / 30%);
  --rs-loader-rotor: var(--rs-gray-0);
  --rs-loader-backdrop: rgb(from var(--rs-gray-900) r g b / 83%);
  --rs-loader-ring-inverse: rgb(from var(--rs-gray-50) r g b / 80%);
  --rs-loader-rotor-inverse: var(--rs-gray-500);
  --rs-loader-backdrop-inverse: rgb(from var(--rs-gray-0) r g b / 90%);

  // Message
  --rs-message-success-header: #fff;
  --rs-message-success-text: #fff;
  --rs-message-success-icon: #fff;
  --rs-message-success-bg: var(--rs-green-900);
  --rs-message-success-border: var(--rs-green-300);
  --rs-message-info-header: #fff;
  --rs-message-info-text: #fff;
  --rs-message-info-icon: #fff;
  --rs-message-info-bg: var(--rs-blue-900);
  --rs-message-info-border: var(--rs-blue-500);
  --rs-message-warning-header: #fff;
  --rs-message-warning-text: #fff;
  --rs-message-warning-icon: #fff;
  --rs-message-warning-bg: var(--rs-yellow-900);
  --rs-message-warning-border: var(--rs-yellow-500);
  --rs-message-error-header: #fff;
  --rs-message-error-text: #fff;
  --rs-message-error-icon: #fff;
  --rs-message-error-bg: var(--rs-red-900);
  --rs-message-error-border: var(--rs-red-300);

  // Tooltip
  --rs-tooltip-bg: var(--rs-gray-800);
  --rs-tooltip-text: var(--rs-gray-0);

  // Progress
  --rs-progress-bg: var(--rs-gray-700);
  --rs-progress-bar: var(--rs-primary-500);
  --rs-progress-bar-success: var(--rs-color-green);
  --rs-progress-bar-fail: var(--rs-color-red);

  // Placeholder
  --rs-placeholder: var(--rs-gray-600);
  --rs-placeholder-active: var(--rs-gray-500);

  // Breadcrumb
  --rs-breadcrumb-item-active-text: #fff;

  // Dropdown
  --rs-dropdown-divider: var(--rs-gray-600);
  --rs-dropdown-item-bg-hover: var(--rs-gray-600);
  --rs-dropdown-item-bg-active: rgb(from var(--rs-primary-900) r g b / 20%);
  --rs-dropdown-item-text-active: var(--rs-primary-500);
  --rs-dropdown-header-text: var(--rs-gray-500);
  --rs-dropdown-shadow: 0 0 10px 1px rgba(0, 0, 0, 0.2), 0 4px 4px 3px rgba(0, 0, 0, 0.24);

  // ARIA menu
  --rs-menuitem-active-bg: transparent;
  --rs-menuitem-active-text: var(--rs-primary-500);

  // Steps
  --rs-steps-border: var(--rs-gray-200);
  --rs-steps-state-finish: var(--rs-primary-500);
  --rs-steps-border-state-finish: var(--rs-primary-500);
  --rs-steps-state-wait: var(--rs-gray-200);
  --rs-steps-state-process: var(--rs-primary-700);
  --rs-steps-state-error: var(--rs-color-red);
  --rs-steps-border-state-error: var(--rs-color-red);
  --rs-steps-icon-state-process: var(--rs-primary-500);
  --rs-steps-icon-state-error: var(--rs-color-red);

  // Navs
  --rs-navs-text: var(--rs-gray-200);
  --rs-navs-text-hover: var(--rs-primary-500);
  --rs-navs-bg-hover: transparent;
  --rs-navs-text-active: var(--rs-primary-500);
  --rs-navs-bg-active: var(--rs-gray-400);
  --rs-navs-tab-border: var(--rs-gray-600);
  --rs-navs-subtle-border: var(--rs-gray-600);
  --rs-navs-selected: var(--rs-primary-500);

  // Nav Pills
  --rs-navs-pills-bg: var(--rs-gray-700);
  --rs-navs-pills-item-color: var(--rs-text-secondary);
  --rs-navs-pills-item-active-bg: var(--rs-gray-600);
  --rs-navs-pills-item-active-color: var(--rs-primary-500);
  --rs-navs-pills-item-disabled-color: var(--rs-gray-400);

  // Navbar
  --rs-navbar-default-bg: var(--rs-gray-800);
  --rs-navbar-default-text: var(--rs-gray-50);
  --rs-navbar-default-selected-text: var(--rs-primary-500);
  --rs-navbar-default-hover-bg: transparent;
  --rs-navbar-default-hover-text: var(--rs-primary-500);
  --rs-navbar-inverse-bg: var(--rs-gray-800);
  --rs-navbar-inverse-text: var(--rs-gray-50);
  --rs-navbar-inverse-selected-bg: transparent;
  --rs-navbar-inverse-selected-text: var(--rs-primary-500);
  --rs-navbar-inverse-hover-bg: transparent;
  --rs-navbar-inverse-hover-text: var(--rs-primary-500);
  --rs-navbar-subtle-bg: var(--rs-gray-800);
  --rs-navbar-subtle-text: var(--rs-gray-50);
  --rs-navbar-subtle-selected-text: var(--rs-primary-500);
  --rs-navbar-subtle-hover-bg: transparent;
  --rs-navbar-subtle-hover-text: var(--rs-primary-500);

  // Sidenav
  --rs-sidenav-default-bg: var(--rs-gray-800);
  --rs-sidenav-default-text: var(--rs-gray-50);
  --rs-sidenav-default-selected-text: var(--rs-primary-500);
  --rs-sidenav-default-hover-bg: transparent;
  --rs-sidenav-default-hover-text: var(--rs-primary-500);
  --rs-sidenav-default-footer-border: var(--rs-gray-50);
  --rs-sidenav-inverse-bg: var(--rs-gray-800);
  --rs-sidenav-inverse-text: var(--rs-gray-50);
  --rs-sidenav-inverse-selected-bg: transparent;
  --rs-sidenav-inverse-selected-text: var(--rs-primary-500);
  --rs-sidenav-inverse-hover-bg: transparent;
  --rs-sidenav-inverse-footer-border: var(--rs-gray-50);
  --rs-sidenav-subtle-bg: var(--rs-gray-800);
  --rs-sidenav-subtle-text: var(--rs-gray-50);
  --rs-sidenav-subtle-selected-text: var(--rs-primary-500);
  --rs-sidenav-subtle-hover-bg: transparent;
  --rs-sidenav-subtle-hover-text: var(--rs-primary-500);
  --rs-sidenav-subtle-footer-border: var(--rs-gray-50);

  // Input
  --rs-input-bg: var(--rs-gray-800);
  --rs-input-focus-border: var(--rs-primary-500);
  --rs-input-disabled-bg: var(--rs-gray-700);

  // InlineEdit
  --rs-inline-edit-hover-bg: transparent;

  // ARIA Listboxes
  --rs-listbox-option-group-bg: var(--rs-gray-800);
  --rs-listbox-option-hover-bg: transparent;
  --rs-listbox-option-hover-text: var(--rs-primary-500);
  --rs-listbox-option-selected-text: var(--rs-primary-500);
  --rs-listbox-option-selected-bg: transparent;
  --rs-listbox-option-disabled-text: var(--rs-gray-500);
  --rs-listbox-option-disabled-selected-text: var(--rs-primary-200);

  // Checkbox
  --rs-checkbox-icon: var(--rs-gray-800);
  --rs-checkbox-border: var(--rs-gray-100);
  --rs-checkbox-checked-bg: var(--rs-primary-500);
  --rs-checkbox-disabled-bg: var(--rs-gray-500);

  // Radio
  --rs-radio-marker: var(--rs-gray-800);
  --rs-radio-border: var(--rs-gray-100);
  --rs-radio-checked-bg: var(--rs-primary-500);
  --rs-radio-disabled-bg: var(--rs-gray-500);

  // RadioTile
  --rs-radio-tile-border: var(--rs-gray-300);
  --rs-radio-tile-bg: var(--rs-gray-0);
  --rs-radio-tile-checked-color: var(--rs-primary-500);
  --rs-radio-tile-checked-mark-color: var(--rs-gray-800);
  --rs-radio-tile-checked-disabled-color: var(--rs-primary-900);

  // Rate
  --rs-rate-symbol: var(--rs-gray-100);
  --rs-rate-symbol-checked: var(--rs-primary-500);

  // Toggle
  --rs-toggle-bg: var(--rs-gray-800);
  --rs-toggle-thumb: var(--rs-gray-100);
  --rs-toggle-hover-bg: var(--rs-gray-800);
  --rs-toggle-disabled-bg: var(--rs-gray-800);
  --rs-toggle-disabled-thumb: var(--rs-gray-300);
  --rs-toggle-checked-bg: var(--rs-primary-500);
  --rs-toggle-checked-thumb: var(--rs-gray-800);
  --rs-toggle-checked-hover-bg: var(--rs-primary-400);
  --rs-toggle-checked-disabled-bg: var(--rs-primary-900);
  --rs-toggle-checked-disabled-thumb: var(--rs-gray-800);

  // Slider
  --rs-slider-bar: var(--rs-gray-600);
  --rs-slider-hover-bar: var(--rs-gray-600);
  --rs-slider-thumb-border: var(--rs-primary-500);
  --rs-slider-thumb-bg: var(--rs-gray-700);
  --rs-slider-thumb-hover-shadow: 0 0 0 8px rgb(from var(--rs-primary-500) r g b / 25%);
  --rs-slider-progress: var(--rs-primary-500);

  // Uploader
  --rs-uploader-item-bg: var(--rs-gray-300);
  --rs-uploader-item-hover-bg: var(--rs-gray-800);
  --rs-uploader-item-hover-text: var(--rs-primary-500);
  --rs-uploader-overlay-bg: rgb(from var(--rs-gray-600) r g b / 80%);
  --rs-uploader-dnd-bg: var(--rs-gray-700);
  --rs-uploader-dnd-border: var(--rs-gray-200);
  --rs-uploader-dnd-hover-border: var(--rs-primary-500);

  // Avatar
  --rs-avatar-bg: var(--rs-gray-400);
  --rs-avatar-text: var(--rs-gray-0);
  --rs-avatar-offset-color: var(--rs-gray-900);
  --rs-avatar-ring-color: var(--rs-avatar-bg);

  // Badge
  --rs-badge-bg: var(--rs-red-500);
  --rs-badge-text: var(--rs-gray-0);

  // Close Button
  --rs-close-button-hover-color: var(--rs-color-red);

  // Tag
  --rs-tag-bg: var(--rs-gray-600);

  // Card
  --rs-card-bg: var(--rs-gray-900);

  // Carousel
  --rs-carousel-bg: var(--rs-gray-600);
  --rs-carousel-indicator: rgb(from var(--rs-gray-0) r g b / 40%);
  --rs-carousel-indicator-hover: var(--rs-gray-0);
  --rs-carousel-indicator-active: var(--rs-primary-500);

  // Panel
  --rs-panel-shadow: 0 4px 4px rgba(0, 0, 0, 0.12), 0 0 10px rgba(0, 0, 0, 0.06);

  // Pagination
  --rs-pagination-item-text: var(--rs-gray-50);
  --rs-pagination-item-current-text: var(--rs-primary-500);

  // List
  --rs-list-bg: transparent;
  --rs-list-border: var(--rs-gray-700);
  --rs-list-hover-bg: var(--rs-gray-600);
  --rs-list-placeholder-bg: rgb(from var(--rs-primary-900) r g b / 20%);
  --rs-list-placeholder-border: var(--rs-primary-500);

  // Timeline
  --rs-timeline-indicator-bg: var(--rs-gray-500);
  --rs-timeline-indicator-active-bg: var(--rs-primary-500);

  // Table
  --rs-table-border-color: var(--rs-border-secondary);
  --rs-table-shadow: rgba(9, 9, 9, 0.99);
  --rs-table-sort: var(--rs-primary-500);
  --rs-table-resize: var(--rs-primary-500);
  --rs-table-scrollbar-track: var(--rs-gray-700);
  --rs-table-scrollbar-thumb: var(--rs-gray-200);
  --rs-table-scrollbar-thumb-active: var(--rs-gray-100);
  --rs-table-scrollbar-vertical-track: var(--rs-gray-700);

  // Drawer
  --rs-drawer-bg: var(--rs-gray-700);
  --rs-drawer-shadow: 0 4px 4px rgba(0, 0, 0, 0.12), 0 0 10px rgba(0, 0, 0, 0.06);

  // Modal
  --rs-modal-shadow: 0 4px 4px rgba(0, 0, 0, 0.12), 0 0 10px rgba(0, 0, 0, 0.06);
  --rs-modal-border: 1px solid var(--rs-gray-100);

  // Form
  --rs-form-errormessage-text: #fff;
  --rs-form-errormessage-bg: var(--rs-red-500);
  --rs-form-errormessage-border: var(--rs-red-500);

  // Picker
  --rs-picker-value: var(--rs-primary-500);
  --rs-picker-count-bg: var(--rs-primary-500);
  --rs-picker-count-text: var(--rs-gray-900);

  // Calendar
  --rs-calendar-today-bg: var(--rs-primary-500);
  --rs-calendar-today-text: var(--rs-gray-900);
  --rs-calendar-range-bg: rgb(from var(--rs-primary-900) r g b / 50%);
  --rs-calendar-time-unit-bg: var(--rs-gray-900);
  --rs-calendar-date-selected-text: var(--rs-gray-900);
  --rs-calendar-cell-selected-hover-bg: var(--rs-gray-50);

  // Popover
  --rs-popover-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);

  // Tree
  --rs-tree-indent-line-color: rgba(255, 255, 255, 0.1);

  // ScrollView
  --rs-scroll-view-shadow-color: rgba(0, 0, 0, 0.99);

  // Stat
  --rs-stat-body-bg: var(--rs-gray-900);

  // CSS relative color syntax is not supported
  // https://developer.chrome.com/blog/css-relative-color-syntax/
  @supports not (color: rgb(from white r g b)) {
    // Misc
    --rs-bg-backdrop: fade(@B900-high-contrast, 80%);
    --rs-state-focus-outline: 3px solid fade(@H500-high-contrast, 25%);

    // Loader
    --rs-loader-ring: fade(@B050-high-contrast, 30);
    --rs-loader-backdrop: fade(@B900-high-contrast, 83%);
    --rs-loader-ring-inverse: fade(@B050-high-contrast, 80);
    --rs-loader-backdrop-inverse: fade(@B000-high-contrast, 90);

    // Dropdown
    --rs-dropdown-item-bg-active: fade(@H900-high-contrast, 20);

    // Slider
    --rs-slider-thumb-hover-shadow: 0 0 0 8px fade(@H500-high-contrast, 25);

    // Uploader
    --rs-uploader-overlay-bg: fade(@B600-high-contrast, 80);

    // Carousel
    --rs-carousel-indicator: fade(@B000-high-contrast, 40);

    // List
    --rs-list-placeholder-bg: fade(@H900-high-contrast, 20%);

    // Calendar
    --rs-calendar-range-bg: fade(@H900-high-contrast, 50%);

    // Placeholder
    --rs-placeholder-active: lighten(@B600-high-contrast, 5%);
  }
}
